CC=gcc
CFLAGS=-W -Wall -g -D Log -D Warning
LDFLAGS=-lpthread -lm
EXEC=tracker
OBJ=tracker.o hashtable.o list.o utils.o socketHandling.o messageHandler.o messageParsing.o peer.o messageComputer.o file.o criterion.o
all: $(EXEC)

tracker: $(OBJ)
	$(CC) -o tracker $(OBJ) $(LDFLAGS)

debug: $(OBJ) 
	$(CC) -o tracker $(OBJ) $(LDFLAGS)

noPrint: $(OBJ) 
	$(CC) -o tracker $(OBJ) $(LDFLAGS)

tracker.o: tracker.c
	$(CC) -o tracker.o -c tracker.c $(CFLAGS)

hashtable.o: hashtable.c 
	$(CC) -o hashtable.o -c hashtable.c $(CFLAGS)

list.o: list.c
	$(CC) -o list.o -c list.c $(CFLAGS)

utils.o: utils.c
	$(CC) -o utils.o -c utils.c $(CFLAGS)

socketHandling.o: socketHandling.c
	$(CC) -o socketHandling.o -c socketHandling.c $(CFLAGS)

messageHandler.o: messageHandler.c
	$(CC) -o messageHandler.o -c messageHandler.c $(CFLAGS)

messageParsing.o: messageParsing.c
	$(CC) -o messageParsing.o -c messageParsing.c $(CFLAGS)

peer.o: peer.c 
	$(CC) -o peer.o -c peer.c $(CFLAGS)

messageComputer.o: messageComputer.c
	$(CC) -o messageComputer.o -c messageComputer.c $(CFLAGS)

file.o: file.c 
	$(CC) -o file.o -c file.c $(CFLAGS)

criterion.o: criterion.c 
	$(CC) -o criterion.o -c criterion.c $(CFLAGS)

clean:
	rm *.o *~

mrproper: clean
	rm $(EXEC)
